﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenNETCF.Desktop.Communication;

namespace SegIdenPC.Helper
{
    public class ComunicacionHelper:IDisposable
    {
        #region --- Variables y Propiedades ---
        private RAPI rapi = null;
        private const string SEPARADOR = @"\";
        #endregion

        #region --- Destructor ---
        public void Dispose()
        {
            if (rapi != null)
            {
                if (rapi.Connected) rapi.Disconnect();
                rapi.Dispose();
                rapi = null;
            }
        }
        #endregion

        #region --- Metodos Propios ---
        public bool conectarMovil()
        {
            bool resultado = false;

            // Instanciar componente de comunicacion
            if (rapi == null) rapi = new RAPI();

            // Validar si el equipo movil se encuentra contectado
            if (!rapi.DevicePresent)
            {
                rapi.Dispose();
                rapi = null;

                resultado = false;
            }
            else
            {
                if (!rapi.Connected) rapi.Connect();

                resultado = true;
            }

            return resultado;
        }

        public bool desconectarMovil()
        {
            bool resultado = false;

            if (rapi != null)
            {
                if (rapi.Connected) rapi.Disconnect();
                rapi.Dispose();
                rapi = null;

                resultado = true;
            }

            return resultado;
        }

        public void ejecutarProcesoMovil(string rutaAplicacion, string parametros)
        {
            rapi.CreateProcess(rutaAplicacion, parametros);
        }

        public bool existeArchivoMovil(string rutaArchivo)
        {
            return rapi.DeviceFileExists(rutaArchivo);
        }

        public void eliminarArchivoMovil(string rutaArchivo)
        {
            rapi.DeleteDeviceFile(rutaArchivo);
        }

        public void copiarArchivoMovil(string rutaArchivoPC, string rutaArchivoMovil, bool siExisteSobreEscribir)
        {
            rapi.CopyFileToDevice(rutaArchivoPC, rutaArchivoMovil, siExisteSobreEscribir);
        }

        public void copiarArchivoPC(string rutaArchivoPC, string rutaArchivoMovil, bool siExisteSobreEscribir)
        {
            rapi.CopyFileFromDevice(rutaArchivoPC, rutaArchivoMovil, siExisteSobreEscribir);
        }

        public void crearCarpetaMovil(string ruta)
        {
            if (!rapi.DeviceFileExists(ruta))
            {
                crearCarpetaMovil(ruta.Substring(0, ruta.LastIndexOf(SEPARADOR)));
                rapi.CreateDeviceDirectory(ruta);
            }
        }
        #endregion
    }
}
